function [TVData,TVDataV,TVDataA] = tdasr_convertArticToTV( articData, phoneData, func, means, pc, TV )
  
  global PhoneCode;
  global art_x;
  global art_y;
  
  switch TV
   case 'VEL'
    TVData = [articData(art_x.V,:)' articData(art_y.V,:)'];
    TVData(:,1) = TVData(:,1) - means.VEL(1);
    TVData(:,2) = TVData(:,2) - means.VEL(2);
    TVData = TVData*pc.VEL(:,1);
    TVData = func.VEL( TVData )';
   case 'LTH'
    TVData = [articData(art_x.LI,:)' articData(art_y.LI,:)'];
    TVData(:,1) = TVData(:,1) - means.LTH(1);
    TVData(:,2) = TVData(:,2) - means.LTH(2);
    TVData = TVData*pc.LTH(:,1);
    TVData = func.LTH( TVData )';
   case 'LA'
    laX = articData(art_x.UL,:) - articData(art_x.LL,:);
    laY = articData(art_y.UL,:) - articData(art_y.LL,:);
    laX = laX.^2;
    laY = laY.^2;
    TVData = laX + laY;
    TVData = sqrt(TVData);
    TVData = TVData - means.LA;
    TVData = func.LA( TVData );
   case 'LP'
    TVDataX = mean([articData(art_x.UL,:)' articData(art_x.LL,:)'],2);
    TVDataY = mean([articData(art_y.UL,:)' articData(art_y.LL,:)'],2);
    TVData = ([TVDataX TVDataY]- repmat(means.LP, size(TVDataX,1),1))*pc.LP;
    TVData = func.LP( TVData(:,2) )';
   case 'LD'
    laX = articData(art_x.UI,:) - articData(art_x.LL,:);
    laY = articData(art_y.UI,:) - articData(art_y.LL,:);
    laX = laX.^2;
    laY = laY.^2;
    TVData = laX + laY;
    TVData = sqrt(TVData);
    TVData = TVData - means.LD;
    TVData = func.LD( TVData );
   case 'TTCL'
    TVData = [articData(art_x.TT,:)' articData(art_y.TT,:)'];
    TVData = (TVData-repmat(means.TT,size(TVData,1),1))*pc.TT;
    TVData = func.TTCL( TVData(:,1) )';
   case 'TTCD'
    TVData = [articData(art_x.TT,:)' articData(art_y.TT,:)'];
    TVData = (TVData-repmat(means.TT,size(TVData,1),1))*pc.TT;
    TVData = func.TTCD( TVData(:,2) )';
   case 'TDCL'
    TVData = [articData(art_x.TD,:)' articData(art_y.TD,:)'];
    TVData = (TVData-repmat(means.TD,size(TVData,1),1))*pc.TD;
    TVData = func.TDCL( TVData(:,1) )';
   case 'TDCD'
    TVData = [articData(art_x.TD,:)' articData(art_y.TD,:)'];
    TVData = (TVData-repmat(means.TD,size(TVData,1),1))*pc.TD;
    TVData = func.TDCD( TVData(:,2) )';
   case 'GLO'
    TVData = (phoneData == PhoneCode.a | phoneData == PhoneCode.iX | phoneData == PhoneCode.jh | phoneData == PhoneCode.d | ...
              phoneData == PhoneCode.y | phoneData == PhoneCode.u | phoneData == PhoneCode.iy | phoneData == PhoneCode.g | ...
              phoneData == PhoneCode.aa | phoneData == PhoneCode.e |phoneData == PhoneCode.v |phoneData == PhoneCode.XX | ...
              phoneData == PhoneCode.uu | phoneData == PhoneCode.oo | phoneData == PhoneCode.b | phoneData == PhoneCode.z | ...
              phoneData == PhoneCode.oi | phoneData == PhoneCode.ow | phoneData == PhoneCode.w | phoneData == PhoneCode.r | ...
              phoneData == PhoneCode.ei | phoneData == PhoneCode.ii | phoneData == PhoneCode.dh | phoneData == PhoneCode.X | ...
              phoneData == PhoneCode.i | phoneData == PhoneCode.ou | phoneData == PhoneCode.n | phoneData == PhoneCode.zh | ...
              phoneData == PhoneCode.m | phoneData == PhoneCode.eir | phoneData == PhoneCode.l | phoneData == PhoneCode.uh |...
              phoneData == PhoneCode.ng | phoneData == PhoneCode.ai | phoneData == PhoneCode.o);
    TVData = double(TVData);
   otherwise
    disp([TV, ' not recognized.'])
  end
  
  % Velocity
  TVDataV = [ 0 TVData(3:end)-TVData(1:end-2) 0];
  TVDataA = [ 0 TVDataV(3:end)-TVDataV(1:end-2) 0];
  
  return
